package parts4.lesson40;

/**
 * 课时39 【第06个代码模型】综合案例：生产者与消费者（解决同步问题）
 * 给Data对象加上同步
 * 代码修改了之后，解决了同步的问题
 * 但是因为延迟的关系还没生产出新数据，数据就被拿走了
 * 如果需要解决，则需要解决等待和唤醒机制
 * 想要实现，则要参考Object中的方法：
 * wait()   死等，这里有一个疑问，wait(long timeout, int nanos)中的参数不知道是干嘛用的
 * notify() 唤醒第一个等待进程
 * notifyAll()  唤醒全部等待线程，谁的优先级高，谁就先执行
 * 通过Object的等待和唤醒机制，来解决数据的重复设置问题
 */
public class Demo {
    public static void main(String[] args) {
        Data data = new Data();
        new Thread(new DataProvider(data)).start();
        new Thread(new DataConsumer(data)).start();
    }
}
